import com.sfx.controller.UserController2;
import com.sfx.controller.UserController3;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: sfx
 * Date: 2022-11-08
 * Time: 20:04
 */
public class App {
    //更加简单地存储和读取Bean对象
    //1.前置工作 : 创建并初始化Spring项目
    //2.创建Spring的配置文件并设置Bean扫描的根路径
    //3.Bean对象鞥更简单的存储到Spring中(利用注解(相当于声明)
    //类注解和方法注解 (代表当前的类/方法具有某项能力))
    //1.类注解 : 5大类注解
    // (@controller: 控制器,@Service : 服务 ,@Repository 仓库 ,
    // component 组件,Configuration 配置)  spring中重复使用的对象就为Bean对象
    //2.方法注解 : @Bean---->加上@Bean表示这个类是存到Spring当中

    public static void main(String[] args) {
        //得到Spring上下文对象
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
        //获取到Bean对象,默认取得名字是小驼峰-->id是默认小驼峰--->使用注解有默认的命名规则->默认是小驼峰
        UserController3 userController3 = context.getBean("userController3",UserController3.class);
        //Spring加载的时机是比较靠后的   进行属性注入(存/读) 执行时机比较晚  static在类加载的时候就加载了  执行时间较早比Spring要执行的早
        userController3.doController();
//        SController sController = context.getBean("SController",SController.class);
//        sController.doSController();
//        //加了注解之后,默认为类名首字母小写
//        UserService userService = context.getBean("userService",UserService.class);
//        userService.doService();
//
//        //真正干活的人,真正在数据库上操作  做交互的一层
//        UserRepository userRepository = context.getBean("userRepository",UserRepository.class);
//        userRepository.doRepository();
//
//        UserComponent userComponent = context.getBean("userComponent",UserComponent.class);
//        userComponent.doUserComponent();
//
//        UserConfiguration configuration = context.getBean("userConfiguration",UserConfiguration.class);
//        configuration.doConfiguration();
//        //原类名==>就是对的
//        SController sController = context.getBean("SController",SController.class);
//        sController.doController();
//        //对象没有存放到Spring中,只是单独使用了bean注解-->单独使用Bean注解--->一定要配合5大注解一起使用才有效
//        User user = context.getBean("studentUser",User.class);
//        System.out.println("userName : " + user.getName() + " | " + "userAge : " + user.getAge());
    }
}
